import Vue from 'vue'
import Vuex from 'vuex'
// 导入处理过的axios
import $axios from '../utils/htttp'
// 从element-ui里导入弹窗
import { Message } from 'element-ui'
// 导入路由实例对象
import router from '../router'

// 导入模块
import right from './modules/rights'
import role from './modules/role'
import cate from './modules/cate'


Vue.use(Vuex)

export default new Vuex.Store({
    state: {
        userinfo: sessionStorage.getItem("userInfo") ? JSON.parse(sessionStorage.getItem("userInfo")) : {}
    },
    getters: {
        username: state => state.userinfo.username
    },
    mutations: {
        // 储存用户信息
        SET_USERINFO(state, data) {
            state.userinfo = data
        },
        QUIT(state) {
            state.userinfo = {}
            // 删除用户信息
            sessionStorage.removeItem("userInfo")
            // 跳转到登录
            router.push("/login");
        }
    },
    actions: {
        // 在这里发送登录请求,得到数据后将数据放到state中
        async login_admin(context, data) {
            //   5.2根据接口发送或请求
            let { data: res } = await $axios.post("login", data);
            console.log(res);
            //   5.3处理请求结果
            // 错误弹框
            if (res.meta.status != 200) return Message.error(res.meta.msg);
            // 成功弹框
            Message.success(res.meta.msg);
            // 存储登录信息到本地{持久化}
            sessionStorage.setItem("userInfo", JSON.stringify(res.data));
            // 储存数据到state
            context.commit('SET_USERINFO', res.data)
            router.push("/home");
        }
    },
    modules: {
        right,
        role,
        cate
    }
})